package com.itheima.common.utills;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.Map;

public class MapToClacc {
    public static <T> void setObject(T t, Map map) {
        Class cl = t.getClass();
        map.forEach((k, v) -> {
            try {
                String name = k.toString().substring(0, 1).toUpperCase() + k.toString().substring(1);
                Method mo = cl.getMethod("get" + name);
                //类型判断可扩展
                if (mo.getReturnType().getName().equals(Integer.class.getName())) {
                    mo = cl.getMethod("set" + name, Integer.class);
                    mo.invoke(t, v);
                } else if (mo.getReturnType().getName().equals(String.class.getName())) {
                    mo = cl.getMethod("set" + name, String.class);
                    mo.invoke(t, v);
                } else if (mo.getReturnType().getName().equals(Long.class.getName())) {
                    mo = cl.getMethod("set" + name, Long.class);
                    mo.invoke(t, v);
                } else if (mo.getReturnType().getName().equals(Double.class.getName())) {
                    mo = cl.getMethod("set" + name, Double.class);
                    mo.invoke(t, v);
                } else if (mo.getReturnType().getName().equals(Date.class.getName())) {
                    mo = cl.getMethod("set" + name, Date.class);
                    mo.invoke(t, v);
                } else if (mo.getReturnType().getName().equals(Object.class.getName())) {
                    mo = cl.getMethod("set" + name, Object.class);
                    mo.invoke(t, v);
                } /*else if (mo.getReturnType().getName().equals(Object.class.getName())) {
                    mo = cl.getMethod("set" + name, Object.class);
                    mo.invoke(t, v);*/


            } catch (NoSuchMethodException e) {
                System.out.println("当前字段属性:" + k + ",不在类中");
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        });
    }
}

